
"""
1. 概念 ：是一个装饰器函数 ,@pytest.fixture() , 标记在一个函数上
2. 函数说明
fixture(scope,autouse,params,ids,name)
    autouse : 若它的值为True ,此装饰器函数被自动调用 ，若False的话，就不会被调用
    ids : 他是给生成的结果的fixture进行重命名 ，前提条件是必须有Params
"""

import pytest
from package_pytest.login import login


cases = [('正确的用户名和正确的密码登录',1,'admin','123456'),('正确的用户名和错误的密码登录',4,'admin','1234567'),('空的密码登录',3,'admin',''),('空的用户名登录',2,'','123456')]

ids = ['正确的用户名和正确的密码登录','正确的用户名和错误的密码登录','空的密码登录','空的用户名登录']


@pytest.fixture(params=cases,ids=[case[0] for case in cases])
def login_data(request):
    yield request.param


def test_login(login_data):
    expect_result = login_data[1]
    username = login_data[2]
    password = login_data[3]
    actual_result = login(username,password).get('code')

    assert expect_result == actual_result